﻿#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<type_traits>
#include<string>
#include<list>
#include"stl_type_traits.h"
//using namespace std;
template<typename T>
void process(T value) 
{
	if constexpr (std::is_pointer_v<T>) 
	{
		// 指针类型的处理
		std::cout << "Processing pointer: " << *value << std::endl;
	} 
	else if constexpr (std::is_integral_v<T>) 
	{
		// 整数类型的处理
		std::cout << "Processing integer: " << value * 2 << std::endl;
	} 
	else if constexpr (std::is_floating_point_v<T>) 
	{
		// 浮点类型的处理
		std::cout << "Processing float: " << value / 2.0 << std::endl;
	} 
	else
	{
		// 默认处理
		std::cout << "Processing unknown type" << std::endl;
	}
}
#if defined(_WIN32)
	#include<winsock2.h>
	using socket_t = SOCKET;
#else
	using socket_t = int;
#endif
template<typename T>
void close_handle(T handle) {
	if constexpr (std::is_same_v<T, SOCKET>) {
		closesocket(handle);
	} 
	else{
		close(handle);
	}
} 
//int main()
//{
//	// 使⽤
//	int i = 42;
//	process(i); // Processing integer: 84
//	process(&i); // Processing pointer: 42
//	process(3.14); // Processing float: 1.57
//	process("hello"); // Processing unknown type
//	return 0;
//}


//STL的应用
int main()
{
	std::string s("hello world");
	boogiepop::vector<char> v1(s.begin(), s.end());
	std::list<int> lt(10000, 1);
	boogiepop::vector<int> v2(lt.begin(), lt.end());
	return 0;
}